home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1997 December / PC Pro December 1997 CD-Rom coverdisc.iso / symantec / dbAnywh / JAVA.BIN / CLASSES.ZIP / sun / tools / tree / ThisExpression.class (.txt) < prev    next >
Encoding:
Java Class File  |  1996-12-14  |  2.8 KB  |  79 lines

  1. package sun.tools.tree;
  2.  
  3. import java.io.PrintStream;
  4. import java.util.Hashtable;
  5. import sun.tools.asm.Assembler;
  6. import sun.tools.java.Constants;
  7. import sun.tools.java.Environment;
  8. import sun.tools.java.Type;
  9.  
  10. public class ThisExpression extends Expression {
  11.    LocalField field;
  12.  
  13.    public ThisExpression(int var1) {
  14.       super(82, var1, Type.tObject);
  15.    }
  16.  
  17.    public ThisExpression(int var1, Context var2) {
  18.       super(82, var1, Type.tObject);
  19.       if (var2.field.isMethod()) {
  20.          this.field = var2.getLocalField(Constants.idThis);
  21.          ++this.field.readcount;
  22.       }
  23.  
  24.    }
  25.  
  26.    public long checkValue(Environment var1, Context var2, long var3, Hashtable var5) {
  27.       if (var2.field.isStatic()) {
  28.          var1.error(super.where, "undef.var", Constants.idThis);
  29.          super.type = Type.tError;
  30.          return var3;
  31.       } else if ((var3 & 1L) == 0L) {
  32.          var1.error(super.where, "access.inst.before.super", Constants.idThis);
  33.          super.type = Type.tError;
  34.          return var3;
  35.       } else {
  36.          super.type = var2.field.getClassDeclaration().getType();
  37.          if (var2.field.isMethod()) {
  38.             this.field = var2.getLocalField(Constants.idThis);
  39.             ++this.field.readcount;
  40.          }
  41.  
  42.          return var3;
  43.       }
  44.    }
  45.  
  46.    public Expression inline(Environment var1, Context var2) {
  47.       return null;
  48.    }
  49.  
  50.    public Expression inlineValue(Environment var1, Context var2) {
  51.       if (this.field != null) {
  52.          Expression var3 = (Expression)this.field.getValue(var1);
  53.          if (var3 != null) {
  54.             return var3;
  55.          }
  56.       }
  57.  
  58.       return this;
  59.    }
  60.  
  61.    public Expression copyInline(Context var1) {
  62.       ThisExpression var2 = (ThisExpression)((Node)this).clone();
  63.       if (this.field == null) {
  64.          var2.field = var1.getLocalField(Constants.idThis);
  65.          ++var2.field.readcount;
  66.       }
  67.  
  68.       return var2;
  69.    }
  70.  
  71.    public void codeValue(Environment var1, Context var2, Assembler var3) {
  72.       var3.add(super.where, 25, new Integer(this.field.number));
  73.    }
  74.  
  75.    public void print(PrintStream var1) {
  76.       var1.print("this#" + (this.field != null ? this.field.hashCode() : 0));
  77.    }
  78. }
  79.